<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="banner-heading flex_ccenter">
            <div class="heading-item">
              <h1 class="title fw700 f-42 c-fff">Instagram Fotoğraf İndirici</h1>
              <h2 class="sub c-fff f-18 fw400">
                Instagram'dan fotoğraf indirin
              </h2>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                  type="text"
                  class="input f-18"
                  v-model="input"
                  @input="handleInput"
                  @paste="handleInput"
                  placeholder="Paste URL Instagram"
                  list="fruits"
                  name="fruit"
                />
                <datalist id="fruits">
                  <option value="Apple"></option>
                  <option value="Banana"></option>
                  <option value="Cherry"></option>
                </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>Veriler alınıyor, lütfen birkaç saniye bekleyin!</div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Site, bağlantınızı gizli olduğundan işleyemiyor
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              Girdiğiniz veriler bir bağlantı değil, lütfen geçerli bir bağlantı
              girin örnek:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Uygulama Insta Downloader ile indirin
              </h3>
              <p class="f-16 c-ccc">
                Uygulamamız indirme için hızlı ve basit bir çözüm sunar
                 Instagram videoları, HD kalitesinde videolar sağlar
                 filigranlar.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              Savinginsta ile Instagram Fotoğraf İndirme
            </h3>
            <p class="f-16 c-ccc">
              Binlerce gönderi ve yüzbinlerce beğeniyle
               Her gün Instagram'da birçok Instagramcı bu gönderileri kaydetmek istiyor
               kişisel bilgisayarları. Savinginsta'nın Instagram fotoğraf indiricisi
               bu ihtiyacı karşılamak için burada, Instagram fotoğraflarını kaydetmenize yardımcı oluyor
               kolayca. Kullanımı basittir ve sınırsız indirmeye izin verir.
               Instagram'da beğendiğiniz gönderiler ne olursa olsun Savinginsta size yardımcı olabilir
               bunları indirirken.
            </p>
            <p class="f-16 c-ccc">
              Savinginsta, işleri kolaylaştıran bir Instagram (IG) fotoğraf indiricisidir
               Instagram'dan resim kaydetme. Tamamen ücretsiz ve güvenlidir. HAYIR
               Bilgisayarınıza veya cep telefonunuza yazılım yüklemeniz gerekiyor
               telefon; tek ihtiyacınız olan bir Instagram fotoğraf bağlantısı. İşleme
               bizim tarafımızdan yapılır, böylece indirmeye yalnızca bir tık uzaktasınız
               görüntüleri cihazlarınıza aktarın.
            </p>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Savinginsta Kullanarak Instagram Fotoğrafları Nasıl Kaydedilir (İndirilir)?
              </h3>
            </div>
            <div class="steps">
              <p class="super f-16 fw700">
                İnanılmaz derecede kolay. İşte ayrıntılı bir kılavuz:
              </p>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Adım01:</span>
                  <span class="f-16 c-000"
                    >Favori görselinizin bulunduğu Instagram gönderisini bulun ve
                     Bağlantı.</span
                  >
                </div>
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Adım02:</span>
                <span class="f-16 c-000"
                  >Savinginsta sayfasına gidin ve bağlantıyı
                   araç çubuğu.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Adım03:</span>
                <span class="f-16 c-000"
                  >Fotoğrafı kişisel bilgisayarınıza kaydetmek için İndir düğmesini tıklayın.
                   cihaz.</span
                >
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                iPhone'da Instagram (Insta) Fotoğraf İndirme Nasıl Yapılır?
              </h3>
              <div class="note c-ccc f-16">
                Not: Instagram Fotoğraf İndirme yalnızca iPhone'unuz 6s ise çalışır
                 (6s Plus) veya üstü.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Adım01:</span>
                  <span class="f-16 c-000"
                    >iPhone'unuzda Instagram'ı açın, Instagram fotoğrafını seçin
                     Kaydetmek istediğiniz gönderiyi tıklayın ve fotoğrafın URL'sini tıklayarak kopyalayın.
                     Gönderinin üstündeki 3 nokta.
                  </span>
                </div>
              </div>
              <div class="photo-bg">
                <img
                  class="img"
                  src="/static/images/instagram-photo-download.webp"
                  alt="copy the Instagram photo URL and paste"
                />
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Adım02:</span>
                <span class="f-16 c-000"
                  >Instagram Fotoğraf İndiricisini Safari ile açın ve yapıştırın.
                   araç çubuğundaki fotoğraf URL'si.</span
                >
              </div>
              <div class="step">
                <span class="fw700 c-blue f-16">Adım03:</span>
                <span class="f-16 c-000"
                  >İndir'e tıklayın ve ardından kaydetmeye başlamak için bir sunucu seçin.
                   Instagram fotoğrafı.</span
                >
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              <p>
                Aracımız videoları ve görselleri indirmenize yardımcı olmak için tasarlanmıştır
                 kendi hesabınız tarafından yüklenmiştir. Reddetme hakkımız saklıdır
                 Araçlarımızın başkalarının gizliliğini ihlal edecek şekilde kullanılması durumunda hizmet
                 ve malzeme.
              </p>

              <a class="fw700 c-blue" href="/terms-of-service"
                >Hizmet Şartlarımızın tamamını buradan okuyun.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Aletler</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/tr/instagram-story-download"
                      >Instagram Hikaye İndirici</nuxt-link
                    >
                  </li>
                  <li>
                    <nuxt-link to="/tr/instagram-reels-video-download"
                      >Instagram Makaraları İndiricisi</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok İndirici</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Destek</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Temas etmek </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Yasal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Kullanım Şartları
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Gizlilik Politikası </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Instagram veya Meta ile bağlantımız yok</b
            >
            <div class="c-ccc f-16">
               
                © {{new Date().getFullYear()}} Insta Downloader All rights reserved. 
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>
  
  <script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  head: {
    htmlAttrs: {
      lang: "tr",
    },
    bodyAttrs: {
      "data-lang": "tr",
    },
    title:
      "Instagram Fotoğraf İndirici - Savinginsta ile Instagram Fotoğraf İndirme",
    meta: [
      { property: "og:locale", content: "tr" },

      //Page Information
      {
        name: "description",
        content:
          "Çevrimiçi olarak yüksek kaliteli fotoğraf indirmenize olanak tanıyan Instagram Fotoğraf İndirici. Savinginsta Instagram Fotoğraf İndirme aracıyla fotoğrafları hızlı bir şekilde indirebilirsiniz. Filigran yok.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Fotoğraf İndirici - Savinginsta ile Instagram Fotoğraf İndirme",
      },
      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Fotoğraf İndirici - Savinginsta ile Instagram Fotoğraf İndirme",
      },
      { property: "og:type", content: "website" },
      {
        property: "og:url",
        content: "https://savinginsta.com/tr/instagram-photo-download",
      },

      {
        property: "og:description",
        content:
          "Çevrimiçi olarak yüksek kaliteli fotoğraf indirmenize olanak tanıyan Instagram Fotoğraf İndirici. Savinginsta Instagram Fotoğraf İndirme aracıyla fotoğrafları hızlı bir şekilde indirebilirsiniz. Filigran yok.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      {
        name: "twitter:url",
        content: "https://savinginsta.com/tr/instagram-photo-download",
      },
      {
        name: "twitter:title",
        content:
          "Instagram Fotoğraf İndirici - Savinginsta ile Instagram Fotoğraf İndirme",
      },
      {
        name: "twitter:description",
        content:
          "Çevrimiçi olarak yüksek kaliteli fotoğraf indirmenize olanak tanıyan Instagram Fotoğraf İndirici. Savinginsta Instagram Fotoğraf İndirme aracıyla fotoğrafları hızlı bir şekilde indirebilirsiniz. Filigran yok.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/tr/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro/instagram-photo-download",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el/instagram-photo-download",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/tr/instagram-photo-download",
      },
    ],
    script: [
      {
        json: {
          "@context": "http://schema.org",
          "@graph": [
            {
              "@type": "WebSite",
              name: "Savinginsta",
              alternateName: "Instagram downloader", 
              url: "https://savinginsta.com",
            },
            {
              "@type": "WebPage",
              name: "Instagram Fotoğraf İndirici - Savinginsta ile Instagram Fotoğraf İndirme",
              inLanguage: "tr",
              description:
                "Çevrimiçi olarak yüksek kaliteli fotoğraf indirmenize olanak tanıyan Instagram Fotoğraf İndirici. Savinginsta Instagram Fotoğraf İndirme aracıyla fotoğrafları hızlı bir şekilde indirebilirsiniz. Filigran yok.",
              image: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg", //绝对路径
              url: "https://savinginsta.com/tr/instagram-photo-download",
            },
          ],
        },
        type: "application/ld+json"
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Instagram fotoğraf indiricisi nedir?`,
          content: `Herhangi bir Instagram fotoğrafını, gönderisini kişisel cihazınıza indirmeyi destekleyen bir araçtır. Insta fotoğraflarını PC, Mac, Android, iOS ve iPhone'a kaydedebilirsiniz.`,
        },
        {
          title: `Instagram Özel Fotoğraflarını indirebilir miyim?`,
          content: `Hayır, Savinginsta yalnızca Instagram fotoğraflarının Herkese Açık hesaplardan kaydedilmesini destekler.`,
        },
        {
          title: `Instagram fotoğraflarını kaydederken Giriş yapmam gerekiyor mu?`,
          content: `Hayır, hesabınıza giriş yapmanıza gerek yoktur. IG fotoğraf indiricimiz çok güvenlidir.`,
        },
        {
          title: `Web sitesi bilgisayarlara Insta fotoğraf indirmeyi destekliyor mu?`,
          content: `Evet, video ve fotoğrafları bilgisayarınıza kolaylıkla indirebilirsiniz. Ayrıca bakınız: PC'de Insta'dan indirin.`,
        },
        {
          title: `Android için Insta fotoğrafını indirebilir misiniz?`,
          content: `Evet, gönderinin bağlantısını kopyalayıp web sitemizdeki kutuya yapıştırın ve ardından kaydedin. Daha fazla bilgi için: Android'de Insta'dan indirin.`,
        },
        {
          title: `İndirdiğim IG fotoğrafım indirdikten sonra nereye kaydediliyor?`,
          content: `Videolar genellikle Android Mobile ve PC'deki "İndirilenler" klasörüne kaydedilir.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      let type = checkString(this.input);
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "photo",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "photo",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "photo",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "photo",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "photo",
          });
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "photo",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },
    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "video",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "video",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
  },
};
</script>
  <style lang="scss" scoped>
 @import "@/static/style/photo.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
  